package com.etime.shycourse.services.salers.interfaces;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.etime.shycourse.dto.SalerDto;
import com.etime.shycourse.dto.SysUserDto;
import com.etime.shycourse.dto.UserSalerDto;
import com.etime.shycourse.orde.dto.SysOrderDetailsDto;
import com.etime.shycourse.orde.pojo.Orders;
import com.etime.shycourse.pojo.SysUser;

/**
 * @author wb
 * @since 2022-03-24
 */
public interface SalerServices {
    /**
     * 让用户成为销售人员
     * 1、新建销售人
     * 2、修改用户；
     */
    Integer updateUserBecomeSaler(UserSalerDto userSalerDto);

    /**
     * 根据用id 查询用户有销售人员的信息
     *
     * @param userId
     * @return UserSalerDto
     */
    UserSalerDto selectUserSaler(Integer userId);

    /**
     * 修改用户、销售信息
     * 1、修改用户；
     * 2、修改销售人
     *
     * @return Integer
     */
    Integer updateUserSaler(UserSalerDto userSalerDto);

    /**
     * 销售人员管理 分页
     *
     * @param pagenum
     * @param pagesize
     * @return Page<SalerDto>
     */
    Page<SalerDto> selectSalerPage(SalerDto saler, Long pagenum, Long pagesize);

    /**
     * 销售人员对应所有的客户查询 分页
     *
     * @param user
     * @param pageNum
     * @param pageSize
     * @return Page<SysUser>
     */
    Page<SysUser> selectSaleClientPage(SysUserDto user, Long pageNum, Long pageSize);

    /**
     * 销售人员查询自己的客户 分页
     *
     * @param token
     * @param user
     * @param pageNum
     * @param pageSize
     * @return Page<SysUser>
     */
    Page<SysUser> selectSaleMyClientPage(String token, SysUserDto user, Long pageNum, Long pageSize);

    /**
     * 查询指定客户的消费记录 分页
     * 查询 订单列表List；
     * 订单详情查询数据  可选填条件订单号 用户id 下单时间 分页
     *
     * @param orders   orderno, 可选填条件订单号"
     *                 orderuserid  可选填选择条件用户id
     *                 pagenum, value = "第几页"),
     *                 pagesize, value = "每页多少行,
     *                 orderpayment  支付方式
     *                 orderstate, value = "订单状态,
     *                 ordercreatetimeOne  可选填选择条件用户下单时间 开始"),
     *                 ordercreatetimeTwo  可选填选择条件用户下单时间 结束"),
     * @param pageNum
     * @param pageSize
     * @return Page<SysOrderDetailsDto>
     */
    Page<Orders> selectOrderListPageByClient(Orders orders, Long pageNum, Long pageSize);
}
